<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<link rel="shortcut icon" type="image/png" href="styles/UMotionFavicon.png" />
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>UMotion Manual - Custom Property</title>
		<link rel="stylesheet" type="text/css" href="styles/theme_styles.css" media="screen">
		<link rel="stylesheet" type="text/css" href="styles/treeview_styles.css" media="screen">
		<link rel="stylesheet" type="text/css" href="styles/element_styles.css" media="screen">
	</head>
	<body>
		<div class="header">
			<div class="headerLogo">
				<img src="styles/UMotionLogoHeader.png"></img>
			</div>
			<div class="headerBlueRight">
				<a href="https://www.soxware.com" class="headerLink">soxware.com</a>
			</div>
		</div>
		<div class="versionHeader">
			<p class="versionText">Version: <b>1.25p03</b> </p>
		</div>
		<div class="leftContent">
			<div class="leftContentInner">
				<div class="leftContentHeadline">
					UMotion Manual
				</div>
				<!-- Tree View -->
				<ol class="tree">
					
<li class="file"><a href="UMotionManual.html">UMotion Manual</a></li>

<li class="file"><a href="Introduction.html">Introduction & Tips</a></li>

<li class="file"><a href="GettingStarted.html">Getting Started</a></li>

<li>
	<label for="VideoTutorials"><a href="VideoTutorials.html" class="treeFolderLink">Video Tutorials</a></label> <input type="checkbox"  id="VideoTutorials" /> 
	<ol>
<li>
	<label for="GeneralTutorials"><a href="GeneralTutorials.html" class="treeFolderLink">General</a></label> <input type="checkbox"  id="GeneralTutorials" /> 
	<ol>
<li class="file"><a href="QuickStart.html">Quick Start Tutorial</a></li>

<li class="file"><a href="Lesson1.html">1) Installation & First Steps</a></li>

<li class="file"><a href="Lesson2.html">2) Pose Editing</a></li>

<li class="file"><a href="Lesson3.html">3) Clip Editor</a></li>

<li class="file"><a href="Lesson4.html">4) Curves & Rotation Modes</a></li>

<li class="file"><a href="Lesson5.html">5) Config Mode</a></li>

<li class="file"><a href="Lesson6.html">6) Export Animations</a></li>

<li class="file"><a href="Lesson7.html">7) Root Motion</a></li>

<li class="file"><a href="Lesson8.html">8) Animation Events</a></li>

<li class="file"><a href="Lesson9.html">9) Pose Mirroring</a></li>
</ol>
</li>

<li>
	<label for="ProfessionalExclusive"><a href="ProfessionalExclusive.html" class="treeFolderLink">UMotion Pro</a></label> <input type="checkbox"  id="ProfessionalExclusive" /> 
	<ol>
<li class="file"><a href="ProLesson1.html">1) Importing Animations</a></li>

<li class="file"><a href="ProLesson2.html">2) Inverse Kinematics</a></li>

<li class="file"><a href="ProLesson3.html">3) Child-Of Constraint</a></li>

<li class="file"><a href="ProLesson4.html">4) Custom Properties</a></li>

<li class="file"><a href="ProLesson5.html">5) IK Pinning</a></li>
</ol>
</li>

<li>
	<label for="InPractice"><a href="InPractice.html" class="treeFolderLink">In Practice</a></label> <input type="checkbox"  id="InPractice" /> 
	<ol>
<li class="file"><a href="InPractice1.html">1) Our First Animation</a></li>

<li class="file"><a href="InPractice2.html">2) Editing Animations</a></li>

<li class="file"><a href="InPractice3.html">3) Customizing an animation for a RPG</a></li>

<li class="file"><a href="InPractice4.html">4) Unity Timeline & Weighted Tangents</a></li>
</ol>
</li>

<li>
	<label for="Jayanam"><a href="Jayanam.html" class="treeFolderLink">Jayanam</a></label> <input type="checkbox"  id="Jayanam" /> 
	<ol>
<li class="file"><a href="Jayanam1.html">UMotion Tutorial</a></li>
</ol>
</li>
</ol>
</li>

<li class="file"><a href="HowToCreateBetterAnimations.html">How to create better animations</a></li>

<li>
	<label for="ClipEditor"><a href="ClipEditor.html" class="treeFolderLink">Clip Editor</a></label> <input type="checkbox"  id="ClipEditor" /> 
	<ol>
<li>
	<label for="MenuBar"><a href="MenuBar.html" class="treeFolderLink">Menu Bar</a></label> <input type="checkbox"  id="MenuBar" /> 
	<ol>
<li class="file"><a href="MenuBarFile.html">File</a></li>

<li class="file"><a href="MenuBarEdit.html">Edit</a></li>

<li class="file"><a href="MenuBarHelp.html">Help</a></li>
</ol>
</li>

<li class="file"><a href="Preferences.html">Preferences</a></li>

<li class="file"><a href="ImportExport.html">Import / Export</a></li>

<li class="file"><a href="FKtoIKConversion.html">FK to IK Conversion</a></li>

<li>
	<label for="MainNavigation"><a href="MainNavigation.html" class="treeFolderLink">Main Navigation</a></label> <input type="checkbox"  id="MainNavigation" /> 
	<ol>
<li class="file"><a href="ProjectSettings.html">Project Settings</a></li>

<li class="file"><a href="ClipSettings.html">Clip Settings</a></li>
</ol>
</li>

<li class="file"><a href="AnimatedPropertiesList.html">Animated Properties List</a></li>

<li class="file"><a href="RootMotion.html">Root Motion</a></li>

<li class="file"><a href="RotationModes.html">Rotation Modes</a></li>

<li>
	<label for="DopesheetCurves"><a href="DopesheetCurves.html" class="treeFolderLink">Dopesheet / Curves View</a></label> <input type="checkbox"  id="DopesheetCurves" /> 
	<ol>
<li class="file"><a href="Dopesheet.html">Dopesheet</a></li>

<li class="file"><a href="Curves.html">Curves View</a></li>
</ol>
</li>

<li class="file"><a href="Playback.html">Playback Navigation</a></li>

<li class="file"><a href="Layers.html">Layers</a></li>
</ol>
</li>

<li>
	<label for="PoseEditor"><a href="PoseEditor.html" class="treeFolderLink">Pose Editor</a></label> <input type="checkbox" checked id="PoseEditor" /> 
	<ol>
<li>
	<label for="ConfigMode"><a href="ConfigMode.html" class="treeFolderLink">Config Mode</a></label> <input type="checkbox"  id="ConfigMode" /> 
	<ol>
<li>
	<label for="RigHierarchy"><a href="RigHierarchy.html" class="treeFolderLink">Rig Hierarchy</a></label> <input type="checkbox"  id="RigHierarchy" /> 
	<ol>
<li class="file"><a href="IKSetupWizard.html">IK Setup Wizard</a></li>

<li class="file"><a href="MirrorMapping.html">Mirror Mapping</a></li>
</ol>
</li>

<li class="file"><a href="Configuration.html">Configuration</a></li>

<li class="file"><a href="ConfigDisplay.html">Display</a></li>
</ol>
</li>

<li>
	<label for="PoseMode"><a href="PoseMode.html" class="treeFolderLink">Pose Mode</a></label> <input type="checkbox"  id="PoseMode" /> 
	<ol>
<li class="file"><a href="Tools.html">Tools</a></li>

<li class="file"><a href="Channels.html">Channels</a></li>

<li class="file"><a href="Selection.html">Selection</a></li>

<li class="file"><a href="PoseDisplay.html">Display</a></li>

<li class="file"><a href="Animation.html">Animation</a></li>
</ol>
</li>

<li>
	<label for="Constraints"><a href="Constraints.html" class="treeFolderLink">Constraint System</a></label> <input type="checkbox" checked id="Constraints" /> 
	<ol>
<li class="file"><a href="InverseKinematics.html">Inverse Kinematics</a></li>

<li class="file"><a href="ChildOf.html">Child-Of</a></li>

<li class="file"><a href="CustomProperty.html"><b><u>Custom Property</u></b></a></li>
</ol>
</li>

<li class="file"><a href="Options.html">Options</a></li>

<li class="file"><a href="ToolAssistant.html">Tool Assistant</a></li>
</ol>
</li>

<li class="file"><a href="EditInPlayMode.html">Edit In Play Mode</a></li>

<li class="file"><a href="UnityTimelineIntegration.html">Unity Timeline Integration</a></li>

<li class="file"><a href="UMotionAPI.html">UMotion API</a></li>

<li class="file"><a href="ExportingAnimationsFAQ.html">Exporting Animations FAQ</a></li>

<li class="file"><a href="Support.html">Support / FAQ</a></li>

<li class="file"><a href="ReleaseNotes.html">Release Notes</a></li>

<li class="file"><a href="KnownIssues.html">Known Issues</a></li>

<li class="file"><a href="Credits.html">Credits</a></li>

				</ol>
			</div>
		</div>
		<div class="mainContent">
			<div class="mainContentInner">
				<h1 class="headline1" id="">Custom Property</h1><p class="textBlock">The Custom Property makes it possible to add new properties to a joint/transform. It has 3 different operating modes:</p><ul class="listMain">
    <li class="listItem"><span class="listText"><a href="CustomProperty.html#Controller" class="link">Controller</a></span></li>
    <li class="listItem"><span class="listText"><a href="CustomProperty.html#ComponentProperty" class="link">Component Property</a></span></li>
    <li class="listItem"><span class="listText"><a href="CustomProperty.html#AnimatorParameter" class="link">Animator Parameter</a></span></li>
</ul><p class="textBlock">Custom Properties appear in the Clip Editor's <a href="AnimatedPropertiesList.html" class="link">Animated Properties List</a> and in the Pose Editor's <a href="Channels.html" class="link">Channels List</a>. They can be keyed like any other property. Custom Properties can be constrained, meaning that the input value can be limited to a minimum and maximum value. A constrained property is displayed with a slider in the Channels List.</p><p class="textBlock">Multiple Custom Property Constraints can be added per joint/transform but the name must be unique within the same joint/transform.</p><p class="textBlock"><b>Tip:</b> Most settings of the Custom Property Constraint have the option to be mass applied. <span class="keyboardKey">context click</span> on a setting to open a context menu that provides the option to mass apply the settings current value to all currently selected Custom Property Constraints.</p><img src="images/CustomPropertyConstraintMassApply.png" class="image"></img>
<p class="imageText">Apply setting to all</p><h2 class="headline2" id="Controller">Controller</h2><p class="textBlock">In this operating mode a Custom Property is like a remote control. It can control one or multiple existing properties. This allows to give existing properties more speaking names and simplifies animating as multiple properties can be controlled at the same time (useful when e.g. all <b>FK/IK Blend</b> properties should be controlled at the same time).</p><p class="textBlock">By enabling scaling the Custom Property can have an input value of e.g. -1 ... 0 and scale it to -45 ... 45 for the driven property. Only predefined floating point value typed properties can be driven.</p><p class="textBlock">The driven property is set to read only. It can't be manipulated with a <a href="Tools.html" class="link">Pose Editor Tool</a> or in the <a href="Curves.html" class="link">Curves View</a> of the Clip Editor.</p><h3 class="headline3" id="">Setup</h3><img src="images/CustomPropertyConstraintControllerSetup.png" class="image"></img>
<p class="imageText">Custom Property Constraint - Controller Setup</p><table class="themeTable">
    <tr class="themeTableRow">
        <th class="themeTableHeader">UI Element</th>
        <th class="themeTableHeader">Description</th>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Name</td>
        <td class="themeTableCell">The name of the Custom Property.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Driven</td>
        <td class="themeTableCell">A list of joint/transforms whose properties should be controlled by this Custom Property.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Channel</td>
        <td class="themeTableCell">The channel that should be controlled by the custom property. Only floating point channels are supported. The selected channel will be set in read-only mode in the driven joints/transforms.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Scaling</td>
        <td class="themeTableCell">Enables/Disables scaling of the Custom Property input value.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Constrain Input</td>
        <td class="themeTableCell">Enables/Disables limiting of the Custom Property input value.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Input Min/Max</td>
        <td class="themeTableCell">Only visible when Scaling or <b>Constrain Input</b> is enabled. Defines the input range of the Custom Property (i.e. the driver). If Constrain Input is enabled, the limits can't be exceeded. If Scaling is enabled, those values are used for scaling (the Driver min value will map to the Driven min value etc.).</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Driven Min/Max</td>
        <td class="themeTableCell">Only visible when <b>Scaling</b> is enabled. Defines to which values the Custom Property input values should be scaled to when being applied to the driven property.</td>
    </tr>
</table><h2 class="headline2" id="ComponentProperty">Component Property</h2><p class="textBlock">In this operating mode a Custom Property is used to animate a property of a component (MonoBehaviour) of the animated GameObject.</p><p class="textBlock">Typical use cases are:</p><ul class="listMain">
    <li class="listItem"><span class="listText">Animating <a href="https://docs.unity3d.com/Manual/BlendShapes.html" class="link">Blend Shape</a> weights (e.g. for animating facial expressions)</span></li>
    <li class="listItem"><span class="listText">Animating the collider size (e.g. reducing the height while crouching)</span></li>
    <li class="listItem"><span class="listText">Animating a Light component's intensity property for a gun fire animation</span></li>
    <li class="listItem"><span class="listText">...</span></li>
</ul><p class="textBlock">A property of a component (or a blend shape) can only be animated by a single Custom Property. The Custom Property can be attached to a completely different joint/transform than the component that should be animated.</p><p class="textBlock">Before importing animation clips that contain curves for blend shapes or component properties, a Custom Property for these properties needs to be configured. Curves where no related Custom Property can be found won't be imported.</p><h3 class="headline3" id="">Blend Shapes</h3><p class="textBlock">When a new project is created and a Game Object is applied to the Pose Editor for the first time, UMotion can automatically create Custom Properties for all blend shapes of that GameObject (if the user accepts that in the appearing dialog window).</p><p class="textBlock">For existing projects it might be necessary to manually add blend shapes. Therefore add a new Custom Property constraint using the component Property mode to a desired joint/transform. As "Object" the transform that has the "Skinned Mesh Renderer" attached needs to be selected. Select "Skinned Mesh Renderer / Blend Shape / <your blend shape name>" as property and your done.</p><h3 class="headline3" id="">Setup</h3><img src="images/CustomPropertyConstraintComponentPropertySetup.png" class="image"></img>
<p class="imageText">Custom Property Constraint - Component Property Setup</p><table class="themeTable">
    <tr class="themeTableRow">
        <th class="themeTableHeader">UI Element</th>
        <th class="themeTableHeader">Description</th>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Name</td>
        <td class="themeTableCell">The name of the Custom Property.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Object</td>
        <td class="themeTableCell">The object that holds the component of which a property should be animated.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Property</td>
        <td class="themeTableCell">Select the property that should be animated by clicking on the "..." button. A context menu displays all components and all properties that can be animated. Blend shapes can be found under the "Skinned Mesh Renderer" component.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Preview</td>
        <td class="themeTableCell">When enabled the value of the animated component property is written in Pose Mode. This makes it possible to preview the changes inside UMotion. Changes are reverted when the animated GameObject is not controlled by the Pose Editor anymore (clear was pressed).</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Constrain Input</td>
        <td class="themeTableCell">Enables/Disables limiting of the Custom Property input value.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell" style="white-space: nowrap;">Input Min/Max</td>
        <td class="themeTableCell">Only visible when Constrain Input is enabled. Defines the input range of the Custom Property.</td>
    </tr>
</table><h2 class="headline2" id="AnimatorParameter">Animator Parameter</h2><p class="textBlock">In this operating mode a Custom Property is used to animate the value of a <a href="https://docs.unity3d.com/Manual/AnimationParameters.html" class="link">Parameter of an Animator Controller</a>. This is similar as if an animation curve is added in the model import settings (see <a href="https://docs.unity3d.com/Manual/AnimationCurvesOnImportedClips.html" class="link">Animation Curves on Imported Clips - Unity Manual</a>).</p><h3 class="headline3" id="">Setup</h3><img src="images/CustomPropertyConstraintAnimatorParameterSetup.png" class="image"></img>
<p class="imageText">Custom Property Constraint - Animator Parameter Setup</p><table class="themeTable">
    <tr class="themeTableRow">
    <th class="themeTableHeader">UI Element</th>
        <th class="themeTableHeader">Description</th>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell">Name</td>
        <td class="themeTableCell">The name of the Custom Property.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell">Constrain Input</td>
        <td class="themeTableCell">Enables/Disables limiting of the Custom Property input value. When enabled, the Custom Property is displayed with a slider in the Channels panel.</td>
    </tr>
    <tr class="themeTableRow">
        <td class="themeTableCell">Input Min/Max</td>
        <td class="themeTableCell">Only visible when <b>Constrain Input</b> is enabled. Defines the input range of the Custom Property.</td>
    </tr>
</table><h2 class="headline2" id="">Tip: Boolean Curves</h2><p class="textBlock">If the Custom Property constraint is used as a <b>Component Property</b> or <b>Animator Parameter</b> it can also be used for animating Boolean properties/parameters. The curve will be displayed like any other float curve inside UMotion. When applied to the property/parameter it is evaluated as "false" if the value equals 0 and "true" if it equals any non-zero value. For simplicity it is recommended to use 0 (= false) and 1 (= true) exclusively as key values inside UMotion. It's also recommended to use the tangent mode "Constant" for all keys of Boolean curves.</p>
				<div class="mainContentFooter">
					<p class="textBlock" style="float:left">Copyright © 2017 - 2021 Soxware Interactive ALL RIGHTS RESERVED</p>
					<p class="textBlock" align="right"><a href="https://forum.unity.com/threads/new-umotion-animation-editor-released.490618/" class="link">Unity Forum Thread</a> | <a href="https://www.facebook.com/Soxware/" class="link">Facebook</a> | <a href="https://twitter.com/SoxwareInteract" class="link">Twitter</a> | <a href="https://www.youtube.com/channel/UCCuE6nI5gHvUQjx0lo6Twtg" class="link">Youtube</a></p>
				</div>
			</div>
		</div>
	</body>
</html>
